Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Apuntes de fundamentos de programación unidad 1 (página 2)




Enviado por FRANCISCO RIOS ACOSTA



Partes: 1, 2

• Clasificación. Se refiere a
que los objetos con los mismos atributos y comportamiento
métodos-, son agrupados en clases. Cada objeto
perteneciente a una clase, se dice que es una instancia de la
clase. Así que una clase, representa a un posible conjunto
infinito de objetos individuales. Por ejemplo a todos los alumnos
que aparecerán en la lista de calificaciones finales, los
clasificamos en la clase Alumno. A
todos los amigos que registramos en nuestra agenda, los podemos
clasificar en la clase Persona.
Notemos que los alumnos también tienen dirección,
teléfono y correo electrónico, pero no
los agrupamos en la clase Persona ya
que estos atributos para el caso de la aplicación de
obtener la lista de calificaciones, no se requieren. La pregunta
es ¿Los amigos podrían ser alumnos?.
Discútelo con tus compañeros del grupo
y con tu profesor. La clase describe en una sóla entidad a
los atributos y comportamiento
–métodos-, de todos los objetos que
pertenezcan a ella.

• Polimorfismo. Es una
característica de la orientación a objetos, que
significa que un mismo método puede tener diferente manera
de realizarse, en las diferentes clases que tengamos bajo
estudio. Cada objeto perteneciente a una clase, "sabe como"
ejecutar sus propios métodos. Cuando programamos orientado
a objetos, el lenguaje de programación
automáticamente selecciona el método correcto para
efectuar una cierta acción o transformación sobre
el objeto al que se aplica. Por ejemplo, si tenemos los
objetos bicicleta,
carro, barco, y
les aplicamos la operación
Mover, la acción se ejecuta de manera
diferente para cada objeto.¿Por qué?. Otro ejemplo
típico es el de los objetos de la clase
Figura, digamos
círculo,
rectángulo,
triángulo. Apliquémosles la
acción de Dibujar, cada uno de
ellos tendrá su propio método
Dibujar definido, ya que la acción
debe implementarse de manera diferente para cada
objeto.

Herencia. Es una de las
características que hacen a la oriientación a
objetos mas eficiente, mas poderosa. Se refiere a compartir
atributos y métodos entre clases, que se relacionan de
manera jerárquica. Un ejemplo sería definir la
clase Persona con atributos :
nombre, edad y
sexo. Esta clase se denomina clase base, ya
que de aquí podríamos definir otras clases
Alumno,
Profesor,
Empleado, que heredan los atributos y
métodos de la clase Persona. A
estas 3 clases se les denominan clases derivadas. Entonces, en
herencia las clases base proporcionan atributos y métodos
a otras clases, las clases derivadas. Para visualizar la
herencia, se construyen los árboles de herencia. A cada
clase sea base o derivada se denota con un elipse, y la herencia
se denota usando una flecha con dirección de la clase
derivada hacia la clase base.

Monografias.com

Si las clases derivadas tienen los
atributos :

• clase Alumno :
número de control,
calificación,

• clase Profesor
: número de tarjeta,
grado,

• clase Empleado
: salario, nombre del
puesto.

Al aplicar la herencia, los objetos de las
clases derivadas tendrán ahora además de sus
atributos antes enumerados, los atributos que heredan de la clase
base Persona.

• clase Alumno :
número de control,
calificación, nombre, edad,
sexo

• clase Profesor
: número de tarjeta,
grado, nombre, edad,
sexo

• clase Empleado
: salario, nombre del
puesto, nombre, edad,
sexo

Lo mismo sucede con los métodos en
la clase base Persona, que
serían heredados por las clases derivadas
Alumno,
Profesor,
Empleado. Supongamos que la clase Persona
tiene definido los métodos
AsignaNombre,
AsignaEdad,
AsignaSexo. Las clases derivadas
también heredan a estos métodos, por lo tanto un
objeto alumno puede utilizar estos métodos sin necesidad
de redefinirlos en la clase Alumno.
Por esto, la herencia cuando es utilizada se dice que estamos
reusando código. El reuso de código es una
característica muy poderosa en la orientación a
objetos.

Reconocimiento de
objetos y clases en el mundo real y la
interacción entre
ellos

Ahora que ya conocemos los objetos, sus
tipos, sus atributos, su comportamiento –métodos-,
sus características, podemos seguir con el reconocimiento
de ellos dentro de la especificación de problemas que
deseamos solucionar aplicando la orientación a objetos.
Veamos algunos ejemplos.

Ejemplo 1.1.1.

En un sistema de cómputo identifica
a los objetos y clases que lo conforman. Agrega los atributos y
comportamiento para cada clase que hayas reconocido.

Monografias.com

Agrega mas objetos, clases, atributos y
métodos al ejercicio.

Ejemplo 1.1.2

Identifica los objetos, clases,
atributos, métodos para un edificio del Tec
Laguna.

Monografias.com

Ejemplo 1.1.3

Identifica los objetos, clases,
atributos, métodos para un Departamento Académico
del Tec Laguna.

Monografias.com

Ejercicios propuestos.

1. Encuentra los objetos, clases,
atributos y métodos en un juego de futbol.

2. Encuentra los objetos, clases,
atributos y métodos en un curso de fundamentos de
programación.

3. Encuentra los objetos, clases,
atributos y métodos en tú
recámara.

4. Encuentra los objetos, clases,
atributos y métodos en un carro.

5. Encuentra los objetos, clases,
atributos y métodos en una familia.

La interacción entre objetos se
efectúa mediante mensajes. Un mensaje se envía a un
objeto utilizando un método de la clase. En ocasiones un
objeto envía un mensaje a otro objeto de la misma clase o
de otra clase, a veces un objeto se envía asimismo el
mensaje. Por ejemplo, un chofer
–objeto- envía el mensaje
Avanzar a un objeto
carro. La forma del mensaje
sería : carro.Avanza. Vemos
que la sintaxis para construir un mensaje está compuesta
de 2 partes : el nombre del objeto y el nombre del método.
Ambos deben pertenecer a la clase, tanto el objeto como el
método.

identificadorDelObjeto.Metodo

Otro mensaje podría ser el que usa
el método Arrancar,
carro.Arrancar. Los métodos reciben
parámetros para caracterizar de manera definida a su
acción. Por ejemplo, cuando usamos el mensaje
carro.Avanzar, podemos enviar al
método

Avanzar un parámetro
que indique la velocidad, de manera que ahora
escribiríamos el mensaje de la siguiente forma
:

carro.Avanzar(primera)
ó carro.Avanzar(reversa)
ó
carro.Avanzar(segunda), y así por el
estilo.

Observemos que el parámetro se ha
incluido entre paréntesis. Un método que no reciba
parámetros, puede escribirse con los paréntesis
vacios. Por ejemplo :

carro.Encender()

Cuando escribimos programas orientados a
objetos, éstos están compuestos de
mensajes.

La
abstracción y el encapsulamiento como un
proceso
natural

Hemos establecido que si usamos la
orientación a objetos para enfrentar la solución de
un problema, debemos pensar en reconocer objetos, sus atributos y
sus métodos, terminando por agrupar a los objetos
reconocidos en clases. Al proceso de identificar o reconocer
objetos que existen en el contexto de una aplicación
análisis de un problema-, se le denomina proceso de
abstracción.

Abstracción. consiste de una
examinación colectiva de ciertos aspectos de un problema,
con el objetivo de aislar aquellos aspectos que son importantes
para algún propósito y suprimir aquellos que no lo
son.

Características de la
abstracción.

• Para un mismo problema pueden
existir diferentes abstracciones, dependiendo del
propósito.

• Todas las abstracciones son
incompletas e inexactas.

• La abstracción permite
limitar el universo de manera que podamos construir
modelos.

• No existen abstracciones correctas,
sólo existen abstracciones adecuadas o
inadecuadas.

Encapsulamiento. este concepto se refiere a
lo que ya habíamos comentado anteriormente, acerca de
juntar –encapsular- en una sóla entidad –la
clase-, tanto atributos como métodos. Sólo
imaginate que ves a una muchacha que acapara tu atención,
de inmediato ves en ella atributos que ella como objeto
perteneciente a la clase Mujer, los
contiene. Por ejemplo el color de sus ojos, el color de su tez,
el largo de su cabello, la curvatura de sus … brazos, su
nombre, su edad. También la clase a la que ella pertenece,
encapsula el comportamiento, por ejemplo el
Sonreir, Caminar, Observar,
Platicar, Estudiar por decir algunos
métodos.

Para entablar interacción con ella,
deberás pensar –abstraer- mensajes. Por ejemplo, le
enviarías para conocer su nombre el mensaje :
ellaMujer.ComoTeLLamas. Para saber su edad
tal vez deberías usar el mensaje
ellaMujer.RetornaTuEdad.

El encapsulamiento tiene otro objetivo en
la orientación a objetos, que consiste en la
separación de los aspectos externos de un objeto, los
cuales son accesibles por otros objetos, de los detalles de
implementación interna del objeto, los cuales se ocultan a
otros objetos. Esto lo veremos mas tarde cuando enumeremos los
beneficios de la orientación a objetos.

Ejercicio propuesto.

1. Construye mensajes para objetos de la
clase Alumno, con atributos mencionados en las secciones
anteriores.

2. Construye mensajes para objetos de la
clase Arbitro de cualquier deporte.

La
programación orientada a objetos y la complejidad del
software

Primero comentaremos que al referirnos a la
programación orientada a objetos, estamos hablando de
construir programas cuyas instrucciones manejan objetos de
entrada, procesan mensajes que envían a los objetos, de
manera que se produzcan objetos de salida.

Monografias.com

Software es una palabra en inglés
que significa programación, conjunto de programas, de
acuerdo al contexto en el que se aplique. En este caso, la
complejidad del software se refiere a lo difícil que
resulta construir programas orientados a objetos. La
programación orientada a objetos viene a sustituir a otra
forma de construir programas, que durante mucho tiempo
desde 1973- fue la manera por mucho de escribir programas, la
programación orientada a funciones.

Así que la pregunta es, si la
programación orientada a objetos disminuye la complejidad
del software, es decir, si disminuye la dificultad de construir
programas de computadora. Veamos que podemos decir acerca de
dicha complejidad.

• En cualquier rama de la ciencia, la
complejidad es atacada –disminuida- mediante la
construcción de modelos. Cuando aplicamos la
orientación a objetos para resolver un problema usando un
programa de computadora, nuestros principales esfuerzos son
dirigidos hacia la abstracción –limitar el universo
de objetos, las clases a las que pertenecen,
identificación de sus atributos y métodos. Este
reconocimiento de objetos es requerido para poder obtener los
objetos de salida, luego de procesar los objetos de entrada. Al
proceso de abstraer los objetos, clases, atributos y
métodos tanto de objetos de entrada como de salida, se le
conoce como análisis orientado a objetos. Existen algunas
metodologías para efectuar el análisis orientado a
objetos de un problema. Una de ellas muy popular en estos
días, es el uso de diagramas del UML (lenguaje de modelado
unificado).

• El hecho de efectuar un buen
análisis orientado a objetos, permite un menor tiempo en
la implementación de programas orientados a objetos. La
orientación a objetos permite una mejor adaptibilidad a
los cambios en los requerimientos de un programa,
debido a que las clases encapsulan tanto atributos como
métodos –operaciones-., de manera que si existiera
un cambio en un objeto, como sus atributos y métodos
están encapsulados en una clase, los cambios se
realizarían sólo sobre atributos y métodos
de ese objeto de forma que los efectos colaterales son más
fáciles de manejar.

Conceptos del
ciclo de vida del software

Hagamos una restricción en las
etapas del ciclo de vida del software y revisemos las 4 primeras
:

• Especificación de
requerimientos.

• Análisis orientado a
objetos.

Diseño orientado a
objetos.

• Programación orientada a
objetos.

Monografias.com

Recordemos que software significa
programas, de manera que estamos viendo las etapas que debemos
seguir en la construcción de un programa –grandote o
chiquito, complejo o fácil-. En este curso de fundamentos
de programación, tendremos como principal objetivo
aprender a programar, es decir, aprender a construir programas.
Por lo tanto, es obvio que debemos de seguir estas etapas cuando
construyamos nuestros programas de computadora. Así que no
las olvidemos, debemos "talachearlas".

1.4.1. Especificación de
requerimientos.

Es la primera etapa en el desarrollo de un
programa. generalmente se consideran los siguientes aspectos
:

• Ambito del problema.

• ¿Qué es
necesario?.

• Contexto de la
aplicación.

• ¿Qué se asume por
cierto?.

• Necesidades de
funcionamiento.

La especificación de requerimientos
establece qué es lo vamos a hacer, no cómo lo vamos
a hacer. Es un documento escrito en lenguaje natural donde se
detallan las necesidades que requerimos cubrir en el programa. No
es un documento donde se propone la solución del problema.
Los requerimientos son las características que
deberá cumplir el programa que construyamos siguiendo las
etapas de análisis, diseño e implementación
codificación-.

La especificación de requerimientos
es un documento muy importante al desarrollar un programa, ya que
al terminar de realizar un programa una medida de la calidad de
éste, es comprobar si el programa cumple con cada uno de
los requisitos funcionales descritos en la especificación.
Un programa tiene calidad si cumple con todos los requerimientos
en el documento de especificación.

1.4.2 Análisis orientado a
objetos.

Su propósito es modelar el problema a resolver de
tal manera que pueda ser entendido. Si no construimos un modelo,
entonces el análisis sería una
especificación en lenguaje natural con inconsistencias,
ambiguedades e incompleto. El modelo en nuestro caso sería
un modelo orientado a objetos. Pero, ¿qué es un
modelo?.

Modelo. es una abstracción de un
problema con el propósito de entenderlo antes de
construirlo. Para el caso del desarrollo de un programa orientado
a objetos, el modelo especifica gráficamente a los objetos
que intervienen en el ámbito de nuestra aplicación,
de forma que también indica las clases en las que se
agrupan los objetos, los atributos y los métodos para
dichos objetos.

Características del análisis
orientado a objetos :

• Su salida es un modelo orientado a
objetos, incluyendo las clases, atributos y
métodos.

• Clarifica los requerimientos
definidos en la etapa previa de especificación.

• Proporciona una base formal para el
acuerdo (acerca de lo que se requiere), entre el demandante del
programa y el desarrollador del programa.

• Su resultado representa la
comprensión del sistema que se requiere programar, de
manera que sirva como una buena preparación para el
diseño del programa.

• El modelo que se construye utiliza
notaciones precisas.

• Permite tratar con la complejidad de
un problema, de forma que pueda ser programado. En otras palabras
reduce la complejidad al escribir un programa.

• El proceso de construir un modelo
dentro del análisis, obliga al desarrollador a confrontar
lo que no entiende acerca del dominio de una aplicación,
al inicio del desarrollo de un programa.

Para construir modelos orientados a objetos
existe un conjunto de diagramas que forman parte del Lenguaje
para Modelado Unificado (UML en inglés). El UML consiste
de un grupo de diagramas que nos ayudan en las diferentes etapas
del desarrollo de un programa, no solamente en el
análisis.

Los diagramas del UML son los siguientes
:

• Diagramas de casos de
uso.

• Diagramas de clase.

• Diagramas de actividad.

• Diagramas de secuencia.

• Diagramas de estado.

• Diagramas de componentes y de puesta
en uso.

1.4.3 Diseño orientado a
objetos.

Una vez que hemos analizado un problema con
el fin de construir un programa que lo soluciones, seguimos con
la etapa del diseño. Durante la etapa del diseño se
especifica el CÓMO se va a construir el programa, a
diferencia del análisis en donde se especifica el
QUÉ es necesario hacer para construirlo.

En la etapa del diseño se decide la
ARQUITECTUIRA DEL PROGRAMA, es decir su estructura y estilo. Esta
arquitectura proporciona el contexto que servirá de base
para efectuar decisiones mas detalladas en posteriores estados
del diseño. La arquitectura del programa consiste en
organizar el programa en módulos que contienen objetos. A
este proceso se le denomina modularización.

Cada módulo contiene mensajes
-identidicadorDeObjeto.Metodo()- entre objetos que pertenecen o
no al módulo. Este conjunto de mensajes en que consiste el
módulo, efectúan tareas simples, lógicas y
completas. A estas tareas se les denominan tareas
cohesivas.

Los diagramas de casos de uso del UML son
utilizados en la etapa del diseño, representando una parte
fundamental de base para conseguir la modularización del
programa. En los diagramas de casos de uso se especifican las
tareas que se deben realizar en cada módulo del programa.
Los objetos que intervienen ya han sido previamente modelados en
el análisis mediante la utilización de los
diagramas de clase.

Las transformaciones de los objetos se
detallan en los diagramas de estado, las cuales son descritas de
manera íntegra en la etapa del diseño.

Otras fases en el diseño de objetos
son las definiciones de las interfases y algoritmos utilizados
para la implementación de los diferentes métodos y
tareas previamente analizadas y descritas. Los algoritmos son
escritos en lenguaje natural en neustro caso el español.
Los tipos de datos empleados en la definición de las
variables que intervienen en los algoritmos, se les llama tipos
de datos abstractos. La etapa del diseño orientado a
objetos también añade objetos internos para
completar la implementación del programa, además de
emplear refinamientos sucesivos de manera que se eficienticen las
estrucuras de los objetos –atributos y métodos- y
los algorimtos en cada módulo en los que se ha
descompuesto el programa.

Los diagramas del UML que son fundamentales
en la etapa de diseño para construcción de
algoritmos y refinación de las clases, son los diagramas
de actividad y diagramas de secuencia. estos 2 diagramas se
relacionan fuertemente con las acciones que producen los cambios
en los objetos definidos en los diagramas de estados del UML
utilizados en la etapa del análisis.

1.4.4 Programación orientada a
objetos.

Esta etapa es llamada de varias maneras :
Implementación ó Codificación. En la etapa
de diseño los algoritmos que realizan las tareas de cada
módulo en que se dividió el programa, se escriben
en lenguaje natural –para nosotros el español-. En
cambio, en la etapa de implementación o
codificación los algoritmos –programas- que cumplen
con las tareas de cada módulo, son escritos
–codificados- en el lenguaje de programación
seleccionado. El lenguaje de programación que nosotros
usaremos es el lenguaje C#.

Aquí los algoritmos de la etapa de
diseño son codificados en sentencias propias del lenguaje
de programación. Un lenguaje de programación tiene
tipos predefinidos de datos, tiene sus sentencias y clases
propias, de manera que es relativamente fácil definir
clases y objetos que previamente habíamos abstraido en las
etapas de análisis y diseño.

En el lenguaje C# una clase se define
utilizando la palabra reservada class. Los atributos y
métodos se encierran entre los caracteres { y }.
Después de la palabra reservada class se agrega el nombre
de la clase.

class Alumno

{

// definición de
atributos

// definición de
métodos

}

Los atributos de un objeto que pertenece a
una clase tienen siempre un tipo. Por ejemplo, la
calificación de un alumno es un entero de 0 a 100,
así que el tipo del atributo
calificacion es de tipo entero –int en
C#-. El nombre del alumno es una cadena de caracteres de manera
que el tipo del atributo nombre es
tipo cadena –string en C#-. Los tipos int y string son
tipos de datos predefinidos en C#. Los tipos predefinidos son los
tipos de datos básicos que un lenguaje tiene integrados en
su ambiente de desarrollo, para que el programador los utilice
sin restricción alguna.

Elementos
primordiales en el modelo de objetos

En las secciones anteriores ya hemos visto
los conceptos de :

• Abstración, la cual consiste
de una examinación colectiva de ciertos aspectos de un
problema, con el objetivo de aislar aquellos aspectos que son
importantes para algún propósito y suprimir
aquellos que no lo son. Se utiliza para abstraer objetos, sus
atributos y métodos, además de las clases a las que
pertenecen los objetos.

• Encapsulamiento, que consiste en la
separación de los aspectos externos de un objeto, los
cuales son accesibles por otros objetos, de los detalles de
implementación interna del objeto, los cuales se ocultan a
otros objetos.

• Modularidad, consiste en organizar
el programa en módulos que contienen objetos
pertenecientes a determinadas clases, cuya interacción
entre ellos desarrollan una tarea específica,
lógica y completa. La suma de estos módulos y su
correspondiente tarea que realizan, son la resolución del
problema.

• Jerarquía y herencia, se
refieren a compartir atributos y métodos entre clases, que
se relacionan de manera jerárquica.

• Polimorfismo, es una
característica de la orientación a objetos, que
significa que un mismo método puede tener diferente manera
de realizarse, en las diferentes clases que tengamos bajo
estudio

Existe otro concepto que es muy importante
: el ocultamiento de atributos. El ocultamiento de atributos
está relacionado al concepto de encapsulamiento. Dado que
en la clase es donde se concentran en una sóla entidad a
los atributos y a los métodos, podríamos pensar
¿para qué se hace esto?.

Una regla de oro en la programación
orientada a objetos es ocultar a los atributos del mundo externo
a la clase, es decir, ocultar los atributos a otros objetos que
no pertenecen a la clase, de manera que para accederlos ya sea
para lectura, ya sea para escritura, el acceso sólo puede
efectuarse mediante los métodos de la clase. A los
métodos de la clase a menudo se les denomina interfase de
la clase –comportamiento-. Un programador deberá
saber los métodos definidos en la clase para poder acceder
a los atributos de los objetos pertenecientes a esa clase. Por
ejemplo, si queremos modificar la calificación de un
alumno, deberíamos utilizar el método
AsignarCalificacion(califNueva) que toma al
parámetro califNueva y lo
asigna al atributo calificacion del
objeto involucrado en el mensaje. Digamos que el objeto le hemos
llamado oAlumno1, entonces el mensaje
sería :

oAlumno1.AsignarCalificacion(100)
ó

oAlumno1.AsignarCalificacion(califNueva)

En el primer mensaje, se asigna un 100 al
alumno, mientras que en el segundo mensaje se asigna el valor del
parámetro

califNueva al
alumno.

Historia de los
paradigmas en el desarrollo de software

Sólo me referiré al paradigma
de la orientación a funciones, ya que antecede a la
orientación a objetos en uso y popularidad. Antes de
escribir sobre la orientación a funciones, veremos el
concepto de paradigma.

Paradigma.- representa una forma de
abstraer los elementos que se encuentran en el contexto de un
problema y que enfocándonos a ellos
–analizándolos-, nos ayudan a construir el software
–programa- que requerimos.

Desde 1973 en que Edgser Dijkstra
contribuye con sus principios de programación
estructurada, las metodologías propuestas en el mundo de
la computación para desarrollo de programas que incluyen
análisis y diseño, todas se basaron en la
orientación a funciones.

Orientación a funciones. indica que
debemos descomponer funcionalmente un problema, de manera que
obtengamos módulos que efectúen una función
que puede ser desde compleja hasta simple. La
modularización que conlleva la descomposición en
funciones del problema a resolver, se debe llevar a cabo hasta
obtener funciones simples, lógicas y completas. Una
función con estas características es llamada
función cohesiva.

Por ejemplo, un profesor
requiere de obtener una lista de cada uno de sus grupos donde se
indique la clave del grupo, el horario, el periodo, y el
número de control, el nombre, y la calificación
final de cada uno de los alumnos del grupo que se trate,
además requiere del promedio del grupo, del número
de alumnos aprobados y del número de alumnos
reprobados..

La orientación a funciones nos
indica que debemos descomponer en funciones este problema, que
sumadas lo resuelvan. Entonces debemos efectuar el proceso de
abstracción de dichas funciones, ordenando la
ejecución de cada función de manera que se eviten
indeterminaciones en los datos. La indeterminación de los
datos es otro concepto manejado en la programación
estructurada, consiste de evitar utilizar datos que previamente
no hayan sido asignados o leídos. Para nuestro ejemplo,
una función sería la visualizar los datos de los
alumnos. Digamos que los datos de los alumnos del grupo
FUNDAMENTOS DE PROGRAMACION no han sido leidos aún,
¿que salida en la visualización podríamos
esperar?. Discútelo con tu profesor y tus
compañeros. Es claro que estaríamos en un caso de
indeterminación de datos, ¿de cuáles datos?
, pues del número de control, nombre y calificación
final de los alumnos del grupo FUNDAMENTOS DE PROGRAMACION. Una
abstracción de las funciones que podrían resolver
el problema del profesor son :

• Leer datos de los grupos.

• Leer datos de los alumnos de cada
grupo

• Calcular promedio de cada
grupo

• Calcular número de aprobados
y de reprobados.

• Visualizar la lista del grupo
seleccionado.

Generalmente en la orientación a
funciones, la descomposición funcional es mostrada con
rectángulos que denotan a las funciones de manera
jerárquica.

Monografias.com

Para el punto de vista de un programador
esta descomposición funcional
–modularización- podría estar compuesta de
sólo funciones cohesivas. Es decir, los módulos
están tan obvios para él que ya no necesita seguir
descomponiendo a ninguna de ellas. Otro programador podría
no coincidir con este punto de vista y tratará de seguir
descomponiendo funcionalmente, al módulo que el crea que
la tarea que realiza se compone de otras tantas
funciones.

Por ejemplo, digamos que el
módulo LEER DATOS DE LOS ALUMNOS DE CADA
GRUPO requiere de una mayor modularización,
según lo indicamos enseguida :

• Leer la clave del grupo

• Validar que el grupo haya sido dado
de alta previamente.

• Leer los datos de los alumnos del
grupo seleccionado. El diagrama de la descomposición
funcional cambiaría a :

Monografias.com

Estos refinamientos se realizan hasta que
el analista o programador quede satisfecho con su
modularización del problema.

Beneficios del
modelo de objetos y de la P.O.O. sobre otros
paradigmas

Los beneficios del desarrollo orientado a
objetos son sus características que hemos ya abordado,
tales como :

• Clasificación.

• Herencia.

• Polimorfismo.

• Encapsulamiento.

• Ocultamiento.

En cuanto a la programación
orientada a objetos podríamos enumerar :

• Sobrecarga de operadores y
métodos.

• Constructores y
destructores.

• Manejo de excepciones.

• Atributos y métodos
estáticos.

• Recolectores de basura – Liberadores
de memoria -. Los beneficios en cuanto a desarrollo de sistemas
:

• Facilidad en la traducción de
requerimiento de negocios a módulos de código. Lo
anterior es debido a que la orientación a objetos nos
permite modelar nuestras aplicaciones basados en ideas de objetos
del mundo real, de manera que frecuentemente identificamos una
relación directa entre gente, cosas, conceptos, y las
clases equivalentes que las modelan –representan-. Estas
clases tienen las mismas propiedades y comportamientos tal como
los conceptos en el mundo real que ellas representan, lo cual
ayuda a identificar mas fácilmente
–rápidamente- el código necesario a escribir,
asi como las diferentes partes de la aplicación que
requieren de interactuar entre ellas.

• Otro beneficio es el resuso de
código. Frecuentemente necesitamos de los mismos tipos de
dato en diferentes sitios de la misma aplicación. Por
ejemplo, una aplicación referente a un hospital que
requiera administrar los registros de sus pacientes,
definitivamente necesita de una clase
Persona. Existe además determinada
gente involucrada en el cuidado de un paciente, como son los
doctores, las enfermeras, administradores del hospital, gente de
atención de asegurados, entre otros. Si
definimos una clase genérica llamada
Persona, que contenga todos las propiedades
y métodos comunes a toda esta gente, podríamos
tener una buena cantidad de código reusable que no siempre
es posible usando la orientación a objetos.
Ahora imaginemos que podemos usar esta clase
Persona en otros proyectos, el beneficio del
reuso de código se extiende a otras
dimensiones.

• La modularidad de las clases es otro
beneficio. Si descubriéramos un error en la clase
Persona o si desearamos agregar o cambiar
los métodos en la clase, nuestro esfuerzo lo dirigimos
claramente a la clase y objetos de la clase
Persona. Toda la clase generalmente
está en un solo módulo : un archivo. Cualquier
proceso de la aplicación que tenga relación con la
clase Persona será afectado
inmediatamente por los cambios en ella. La identificación
de estos procesos es fácil, de manera que los cambios
necesarios los localizamos de forma simple, así que la
búsqueda del código que debamos actualizar se
reduce a una tarea sin muchas penas.

 

 

Autor:

FRANCISCO RÍOS
ACOSTA

Instituto Tecnológico de la Laguna
Blvd. Revolución y calzada Cuauhtémoc s/n Colonia
centro

Torreón, Coah;
México

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter